﻿// -------------------------------------------------------------------------
//    @FileName         :    NFlogUtil.h
//    @Author           :    gaoyi
//    @Date             :    24-7-30
//    @Email            :    445267987@qq.com
//    @Module           :    NFlogUtil
//
// -------------------------------------------------------------------------

#pragma once

#include <proto_cs.pb.h>

#include "NFComm/NFCore/NFPlatform.h"
#include "proto_log.nanopb.h"

class NFPlayer;
class NFSession;

/**
 * @class NFlogUtil
 * @brief 日志工具类，用于初始化日志头部信息。
 */
class NFlogUtil
{
public:
    /**
     * @brief 初始化日志头信息。
     *
     * 此函数用于设置日志头的基本信息，为日志记录做准备。
     * @param pstHead 指向日志头结构体的指针，用于存储日志头信息。
     */
    static int InitTlogTencentHead(NFlogHeader* pstHead);

    /**
     * @brief 初始化日志头信息，包含玩家和会话信息。
     *
     * 此函数用于设置日志头的详细信息，包括玩家和会话信息，以便更具体地标识日志来源。
     * @param pstHead 指向日志头结构体的指针，用于存储日志头信息。
     * @param pPlayer 指向玩家对象的指针，提供玩家相关信息。
     * @param pSession 指向会话对象的指针，提供会话相关信息。
     * @return int 返回初始化结果，成功为正数，失败为负数。
     */
    static int InitTlogTencentHead(NFlogHeader* pstHead, NFPlayer* pPlayer, NFSession* pSession);

    /**
     * @brief 初始化日志头信息，包含账号信息。
     *
     * 此函数用于设置日志头的详细信息，特别是通过账号信息来标识日志的归属。
     * @param pstHead 指向日志头结构体的指针，用于存储日志头信息。
     * @param info 账号信息的协议缓冲区对象，包含具体的账号数据。
     * @return int 返回初始化结果，成功为正数，失败为负数。
     */
    static int InitTlogTencentHead(NFlogHeader* pstHead, const proto_ff::AccountInfo& info);

    /**
     * @brief 将字符串转换为日志格式。
     *
     * 此函数的目的是为了将传入的字符串标准化为特定的日志格式，以便于日志记录和后续处理。
     * 它不进行任何实际的日志记录操作，而是返回一个格式化后的字符串，该字符串可以被日志系统进一步处理。
     *
     * @param str 需要转换为日志格式的原始字符串。
     * @return std::string 格式化后的日志字符串。
     */
    static std::string ToLog(const std::string& str);
};

